// package com.shengxi.jttest;
//
// import lombok.extern.slf4j.Slf4j;
// import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
// import org.eclipse.paho.client.mqttv3.MqttCallbackExtended;
// import org.eclipse.paho.client.mqttv3.MqttException;
// import org.eclipse.paho.client.mqttv3.MqttMessage;
//
// /**
//  * description:
//  * author:
//  * date:
//  **/
// @Slf4j
// public class MyMQTTCallback implements MqttCallbackExtended {
//
//     private MyMQTTClient myMQTTClient;
//
//     public MyMQTTCallback(MyMQTTClient myMQTTClient) {
//         this.myMQTTClient = myMQTTClient;
//     }
//
//     /**
//      * 丢失连接，可在这里做重连
//      * 只会调用一次
//      *
//      * @param throwable
//      */
//     @Override
//     public void connectionLost(Throwable throwable) {
//         log.info("连接断开，下面做重连...");
//         long reconnectTimes = 1;
//         /*while (true) {
//             try {
//                 if (MyMQTTClient.getClient().isConnected()) {
//                     log.info("mqtt 重连成功");
//                     return;
//                 }
//                 log.info("mqtt reconnect times = {} try again...", reconnectTimes++);
//                 MyMQTTClient.getClient().reconnect();
//             } catch (MqttException e) {
//                 log.info("connectionLost method happen error",e);
//             }
//             try {
//                 Thread.sleep(1000);
//             } catch (InterruptedException e1) {
//                 //e1.printStackTrace();
//             }
//         }*/
//
//         //将try catch放到循环外面
//         try {
//             while (true) {
//                 if (MyMQTTClient.getClient().isConnected()) {
//                     log.info("mqtt 重连成功");
//                     return;
//                 }
//                 log.info("mqtt reconnect times = {} try again...", reconnectTimes++);
//                 MyMQTTClient.getClient().reconnect();
//
//                 try {
//                     Thread.sleep(1000);
//                 } catch (InterruptedException e1) {
//                     //e1.printStackTrace();
//                 }
//             }
//         } catch (MqttException e) {
//             log.info("connectionLost method happen error",e);
//         }
//     }
//
//     /**
//      * 消息到达后
//      * subscribe后，执行的回调函数
//      *
//      * @throws Exception
//      */
//     @Override
//     public void messageArrived(String topic, MqttMessage message) throws Exception {
//         if ("/xyf".equals(topic)) {
//             String msgStr = new String(message.getPayload());
//             log.info("receive message : {}", msgStr);
//             //你自己的业务接口
//             if ("1".equals(msgStr)) {
//                 //自己手动造异常
//                 int i = 1 / 0;
//             }
//         }
//     }
//
//     /**
//      * publish后，配送完成后回调的方法
//      *
//      * @param iMqttDeliveryToken
//      */
//     @Override
//     public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
//         log.info("==========deliveryComplete={}==========", iMqttDeliveryToken.isComplete());
//     }
//
//     @Override
//     public void connectComplete(boolean reconnect, String serverURI) {
//         log.info("MQTT 连接成功，连接方式：{}",reconnect?"重连":"直连");
//         myMQTTClient.subscribe("/xyf/#");
//     }
// }
//
//
